Many computers such as an IBM PC.RTM., XT, AT, 386 and/or 486 (or compatable) computer or a Macintosh.RTM. computer are provided or retrofitted with a gameport. Various standards for gameports have been used. A common standard is that described in IBM Technical Reference. Options and Adapters, Vol. 2 "IBM Game Control Adapter" No. 6361493 (1986)--available as part of the IBM Personal Computer Hardware Reference Library and incorporated herein by reference. In one configuration, a gameport provides between four and eight communication lines (along with various voltage or ground lines). According to the standard, at least two, and up to four, lines are coupled to variable resistors in one or more external devices, such as the type of variable resistors found in a typical joystick input device. Typically, a joystick permits connection of two variable resistors to two of the lines, and one to four button or trigger signals over one to four of the remaining lines. A second joystick may provide for coupling of first and second variable resistors through two additional lines.
In previous devices, the use that could be made of the gameports was limited because systems were typically configured to connect a maximum of four axes and a total of four buttons. Although such systems can be used for many purposes, including playing many currently-available games on computers, because of the way the systems were configured and used in the past, the limitation on the number of joysticks that can be attached, the number of buttons that can be used, and the effective rate at which information is input from the joysticks to the computer, previous systems have restricted the use that can be made of the gameport. These restrictions are particularly apparent for more recent generations of computers which have a capability of processing information at rates which are much higher than rates at which information is provided through the gameport according to previous systems. Many previous uses of the gameport required disabling of interrupts in order to service the gameport. Additionally, previous systems typically required programmers to make frequent inquiries to determine the current condition of the joysticks attached to the gameport. This placed an undesirable programming burden on game developers. Previous uses of gameports often resulted in an undesirably high amount of overhead (i.e., the amount of CPU time which is devoted to polling or otherwise servicing the joysticks via the gameport) particularly if the programming using the gameport was not carefully written. In many cases, the difficulty and complexity of programming for previous uses of a gameport led to programming errors or software difficulties leading to calls or inquiries for technical support.
In at least some previous uses of gameports, during the periods of time the gameport was being polled or otherwise serviced it was infeasible for the computer to perform other tasks, effectively monopolizing the computer for relatively long periods; a situation which may not be tolerated by some operating systems (such as IBM.RTM. OS/2) or user interfaces (as anticipated for Microsoft.RTM. Windows 95).
It would not, in general, be desirable to completely redesign the gameport interface specifications because of the undesirability of rendering inoperative or obsolete the existing base of joysticks or other I/O devices, gameport cards or multi-I/O cards, and/or software, all of which, to a greater or lesser extent, are configured to operate in accordance with a standard gameport specification, similar to that described above.
Accordingly, it would be advantageous to provide a method and apparatus for use with a gameport which permits connection of a larger number of joysticks or other devices, provides for a higher rate of information transfer, preferably maintaining compatibility with previous gameports and/or gameport cards or multiple-I/O cards and/or, with previous joystick devices and/or previous software. It would be advantageous to provide a system which reduces programmer burden, is low cost and takes advantage of the increased speed and power of current and anticipated future computers.